Vue.prototype.$http=axios;
//每次发送axios请求之前都会加上这个基础路径
axios.defaults.baseURL="http://localhost:8080";

//登录拦截
//======================axios的前置拦截器【拦截调用后端的请求，达到controller处理请求之前执行====================//
axios.interceptors.request.use(res=>{//作用：让请求头携带token
    // alert("1 - 前置拦截器")
    //从localStorage获取token
    let token = localStorage.getItem("token");
    if(token){
        //设置到请求头
        res.headers["token"] = token;
    }
    return res;
},error => {
    Promise.reject(error)
})
//======================axios的前置拦截器【拦截调用后端的请求】====================//
//======================axios的后置拦截器【处理后台登录拦截的结果】====================//
//后置拦截器一定会比回调函数先处理
axios.interceptors.response.use(res => {//主要是处理后端登录拦截器响应的数据，看是否需要跳转到登录页面
    // alert("2 - 后置拦截器")
    //后端响应的是没有登录的信息
    if (false === res.data.success && "noLogin" === res.data.msg) {//是没有登录的false
        /*
        要写明是什么类型的false。因为例如登录成功后报500错误，也是false
        所以需要"noLogin" === res.data.msg这句话
         */
        //普通用户前端没有权限什么的说法，所以不用加permissions、menus
        localStorage.removeItem("token");
        localStorage.removeItem("logininfo");
        //跳转到登录页面 - 用户的页面没有路由，所以不能用路由来跳转页面，而是location
       location.href = "/login.html"//没有登录就跳转到登录页面
    }else if (false === res.data.success && "timeout" === res.data.msg){
        localStorage.removeItem("token");
        localStorage.removeItem("logininfo");
        //跳转到登录页面 - 用户的页面没有路由，所以不能用路由来跳转页面，而是location
        location.href = "/login.html"//没有登录就跳转到登录页面
    }
    return res;//结果res要返回给回调函数，才拿得到返回的信息
},error => {
    Promise.reject(error)
})
//======================axios的后置拦截器【处理后台登录拦截的结果】====================//

//类似路由拦截器：
//静态资源拦截器：【拦截不发送axios请求的资源】
//核心思路：如果你访问的不是login.html，也不是register.html,【其它要登录后才能看到的静态资源】就要判断当前用户是否登录过
let  url = location.href;//http://127.0.0.1/login.html
// alert(location.href)
let path = url.substring(url.lastIndexOf("/"));//substring含头不含尾 - 没有终的下标，就一直截取到最后
if (path != "/login.html" && path != "/register.html" &&
    url.indexOf("/binder.html")==-1 && url.indexOf("/callback.html")==-1){//这4个是要放行的
    let logininfo = localStorage.getItem("logininfo");
    if (!logininfo){//如果没有登陆信息false【取反 - 才为true才能执行下方的代码块】 - 没登录过 - 跳转到登录页面
        location.href = "/login.html";
    }
}
//js中定义一个方法用function
//将url地址栏后的参数解析成一个json对象
function parseUrlParams2Obj(url){//地址xxxx?code=111&key=222  => {"code":111,"key":222}
    var obj = {};//定义一个son对象：key-value的形式存取值
    //截取？ 后面的数据 = 参数们
    let params = url.substring(url.indexOf("?")+1);//code=111&key=222      //substring方法含头不含尾，不要？，所以+1
    //将参数分割
    let paramsArr = params.split("&");//得到一个数组[code=111,key=222]
    //遍历
    for (var i = 0;i<paramsArr.length;i++){
        //每一个参数
        let param = paramsArr[i];//code=111  或 key=222
        //按照=进行分割
        let paramArr = param.split("=");
        //该写法的意思 ：对象的[属性名] = 属性值
        obj[paramArr[0]] = paramArr[1];
    }
    return obj;
}

// console.log(parseUrlParams2Obj("xxxx?code=111&key=222"))